Many computing systems today utilize multiple processing units, resulting in a computer architecture generally referred to as multi-processing. Multi-processing systems are often used for transaction processing, such as airline and banking systems. Transaction processing refers generally to a technique for organizing multi-user, high volume, on-line applications that provides control over user access and updates of databases. A transaction refers to the execution of a retrieval or an update program in a database management system. Transactions originating from different users may be aimed at the same database records.
It is important that system hardware or software failures do not result in a loss of database records. The system should be recoverable, which refers to the consistency, integrity and restoration characteristics of an application's database and message environment. A system is recoverable if the process of making permanent all requested database changes and messages is completed even if a host failure occurs during the process of "committing", which refers to the process of making database changes permanent. The system must also maintain indivisibility, which means that all of each transaction's requested database changes and messages must be made permanent as a unit only if the transaction completes successfully; otherwise all must be nullified. This characteristic ensures that the overall database contents are consistent and that the transaction's messages reflect the results of such database contents.
Prior art transaction processing systems provide for recoverability by providing separate permanent data storage devices for each functional module in the system. In order to recover from a system failure, transaction information from each of the functional modules is stored on an external audit trail, which is a sequential storage media for storing a duplicate of the database updates in real-time, or substantially in real-time. If a software, hardware, or other system failure occurs during the execution of certain transactions, valid database updates stored on the audit trail can be copied from the audit trail back onto the database to restore the database to a known valid state.
Prior art systems store valid database updates to the audit trail in the order in which the corresponding updated data records become available, regardless of which transaction the database record is associated with. This piecemeal approach results in an audit trail having portions of various transactions scattered throughout the audit trail storage media. If recovery via the audit trail becomes necessary, each data record or other status information corresponding to a failed transaction must be located on the audit trail storage media prior to restoring the complete transaction to the database. This requires the recovery system to search the storage media, such as a tape or disk, to find the first transaction record, the transaction completion record, and all database records therebetween, which involves a great deal of time and complex searching overhead. In multi-tasking and/or multi-processing transaction processing systems, there may be several hundred or more transactions being concurrently processed. This makes recovery even more time-consuming and complex, as portions of the many transactions will be scattered throughout the audit trail storage media.
The present invention overcomes many of the problems associated with such a sequentially-ordered recovery system, and provides database restoration information to the audit trail in a manner which can be effectively and efficiently used by a database recovery system to restore the database. The present invention therefore provides a solution to the aforementioned and other shortcomings of the prior art, and offers numerous advantages over the prior art.